//package com.zhilei.openApi;
//
//import io.swagger.v3.oas.models.Components;
//import io.swagger.v3.oas.models.ExternalDocumentation;
//import io.swagger.v3.oas.models.OpenAPI;
//import io.swagger.v3.oas.models.info.Info;
//import io.swagger.v3.oas.models.media.StringSchema;
//import io.swagger.v3.oas.models.parameters.Parameter;
//import io.swagger.v3.oas.models.security.SecurityRequirement;
//import io.swagger.v3.oas.models.security.SecurityScheme;
//import org.springdoc.core.GroupedOpenApi;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.Collections;
//
//@Configuration
//public class OpenApiConfig {
//
//    // 定义常量，简化代码
//    private static final String TOKEN_HEADER = "Authorization";
//
//    @Bean
//    public OpenAPI openApi() {
//        return new OpenAPI()
//                .components(
//                        new Components()
//                                .addSecuritySchemes(TOKEN_HEADER,
//                                        new SecurityScheme()
//                                                // 设置认证类型为 APIKEY
//                                                .type(SecurityScheme.Type.APIKEY)
//                                                // 配置认证方式为 Bearer Token
//                                                .scheme("bearer")
//                                                // 配置 token 格式为 JWT
//                                                .bearerFormat("JWT")
//                                )
//                                .addParameters(TOKEN_HEADER,
//                                        new Parameter()
//                                                // 设置参数位置为 HTTP header
//                                                .in("header")
//                                                // 参数类型为字符串
//                                                .schema(new StringSchema())
//                                                // 设置参数名为 Authorization
//                                                .name(TOKEN_HEADER)
//                                )
//                )
//                .info(
//                        new Info()
//                                .title("文档标题")
//                                .description("文档描述")
//                                .version("0.1")
//                                .contact(new io.swagger.v3.oas.models.info.Contact()
//                                        .name("作者")
//                                        .email("邮箱")
//                                        .url("可以写你的博客地址或不填")
//                                )
//                                .license(new io.swagger.v3.oas.models.info.License()
//                                        .name("Apache 2.0")
//                                        .url("https://www.apache.org/licenses/LICENSE-2.0.html")
//                                )
//                )
//                // 引入外部文档
//                .externalDocs(
//                        new ExternalDocumentation()
//                                .description("SpringDoc Full Documentation")
//                                .url("https://springdoc.org/")
//                );
//    }
//
//    /**
//     * GroupedOpenApi 是对接口文档分组，类似于 swagger 的 Docket
//     *
//     * @return
//     */
//    @Bean
//    public GroupedOpenApi authApi() {
//        return GroupedOpenApi.builder()
//                // 组名
//                .group("认证接口")
//                // 扫描的路径，支持通配符
//                .pathsToMatch("/login")
//                // 扫描的包
//                .packagesToScan("com.zhilei.controller")
//                .build();
//    }
//
//    @Bean
//    public GroupedOpenApi sysApi() {
//        return GroupedOpenApi.builder()
//                .group("系统接口")  // 组名
//                .pathsToMatch("/sys/**")  // 扫描路径匹配规则
//                // 添加自定义配置，这里添加了一个用户认证的 header，否则 Swagger UI 中不会显示此项
//                .addOperationCustomizer((operation, handlerMethod) -> operation.security(
//                        Collections.singletonList(new SecurityRequirement().addList(TOKEN_HEADER))  // 配置 Bearer Token 认证
//                ))
//                .build();
//    }
//}
//
